home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / gfx / misc / ShowComment.lha / ShowComment.rexx < prev   
OS/2 REXX Batch file  |  1995-05-21  |  3KB  |  100 lines

  1. /* $VER: ShowComment 1.03 (21.5.95)© Felix C. Coronado
  2. */
  3. OPTIONS RESULTS
  4.  
  5. /*If you are low on memory, you might want to make this smaller, but it
  6.   should stay in the range of 3 - 65535*/
  7. BlockSize=65535
  8.  
  9. NL='0A'x
  10. LUP='1B'x||'M'
  11. PARSE ARG FullFileName
  12. SAY '1B5B316D'x||'ShowComment 1.03 - Copyright (c) 1995 by Felix C. Coronado'||'1B5B306D'x||NL
  13. IF FullFileName='' THEN DO
  14.  SAY 'No file was selected'
  15.  EXIT
  16. END
  17. IF LEFT(FullFileName,1)='"'& RIGHT(FullFileName,1)='"' THEN FullFileName=SUBSTR(FullFileName,2,LENGTH(FullFileName)-2)
  18. IF ~EXISTS(FullFileName) THEN DO
  19.  SAY "Could not find '"||FullFileName||"'"
  20.  EXIT
  21. END
  22. IF OPEN(File,FullFileName,R) THEN DO
  23.  FileType=ReadCh(File,10)
  24.  IF LEFT(FileType,6)~='GIF87a' & LEFT(FileType,6)~='GIF89a' & (LEFT(FileType,4)~='FFD8FFE0'x | RIGHT(FileType,4)~='JFIF') THEN DO
  25.   SAY "'"||FullFileName||"' Not a JPEG or GIF file"
  26.   EXIT
  27.  END
  28.  Comment=''
  29.  SAY "Searching for comments in '"||FullFileName||"'..."||NL||,
  30.          "Ctrl-d to stop"
  31.  IF LEFT(FileType,4)='FFD8FFE0'x & RIGHT(FileType,4)='JFIF' THEN DO
  32.   SIGNAL ON BREAK_D
  33.   BlockNum=0
  34.   SearchVar=''
  35.   ComNum=0
  36.   StartPos=SEEK(File,10,'C')
  37.   DO WHILE ~EOF(File)
  38.    BlockNum=BlockNum+1
  39.    SearchVar=RIGHT(SearchVar,1)||READCH(File,BlockSize-1)
  40.    IF INDEX(SearchVar,'FFFE'x)~=0 THEN DO
  41.     ComNum=ComNum+1
  42.     ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-1)+INDEX(SearchVar,'FFFE'x)
  43.     CALL SEEK(File,ComLengthPos,'B')
  44.     ComLength=C2D(READCH(File,2))-2
  45.     Comment=Comment||NL||,
  46.              NL||,
  47.             '1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
  48.              STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'B','0A'x)
  49.     BlockNum=0
  50.     SearchVar=''
  51.     StartPos=SEEK(File,0,'C')
  52.    END
  53.   END
  54.   SIGNAL OFF BREAK_D
  55.  END
  56.  IF LEFT(FileType,6)='GIF89a' THEN DO
  57.   SIGNAL ON BREAK_D
  58.   BlockNum=0
  59.   SearchVar=''
  60.   ComNum=0
  61.   StartPos=SEEK(File,6,'B')
  62.   DO WHILE ~EOF(File)
  63.    BlockNum=BlockNum+1
  64.    SearchVar=RIGHT(SearchVar,2)||READCH(File,BlockSize-2)
  65.    IF INDEX(SearchVar,'0021FE'x)~=0 THEN DO
  66.     ComNum=ComNum+1
  67.     ComLengthPos=StartPos+(BlockNum-1)*(BlockSize-2)+INDEX(SearchVar,'0021FE'x)
  68.     CALL SEEK(File,ComLengthPos,'B')
  69.     ComLength=C2D(READCH(File,1))
  70.     Comment=Comment||NL||,
  71.              NL||,
  72.             '1B5B316D'x||'Comment '||ComNum||':'||'1B5B306D'x||NL||,
  73.              STRIP(COMPRESS(READCH(File,ComLength),'0D'x),'L','0A'x)
  74.     ComLength=C2D(READCH(File,1))
  75.     DO WHILE ComLength~=0 & ~EOF(File)
  76.      Comment=Comment||COMPRESS(READCH(File,ComLength),'0D'x)
  77.      ComLength=C2D(READCH(File,1))
  78.     END
  79.     Comment=STRIP(Comment,'T','0A'x)
  80.     BlockNum=0
  81.     SearchVar=''
  82.     StartPos=SEEK(File,-1,'C')
  83.    END
  84.   END
  85.   SIGNAL OFF BREAK_D
  86.  END
  87.  SAY LUP||'Finished.     '
  88. END
  89. ELSE DO
  90.  SAY "Error opening '"||FullFileName||"'"
  91.  EXIT
  92. END
  93.  
  94. BREAK_D:
  95. SearchVar=''
  96. CALL CLOSE(File)
  97. IF Comment~='' THEN SAY LUP||Comment
  98.                ELSE SAY NL||,
  99.                        '1B5B316D'x||'No Comment'||'1B5B306D'x
  100.